package atenas.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import atenas.dao.BaseDAO;

import atenas.excepcion.DAOExcepcion;

import atenas.modelo.Poder;
import atenas.util.ConexionBD;

public class PoderDAO extends BaseDAO {
	
	public void registrarPoder(Poder po) throws DAOExcepcion {
		System.out.println("Poder: insertar(Poder po)");
		String query = "INSERT INTO Poder(codpoder,descripcion, tipoproducto, tiposervicio) VALUES (?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			
			Poder poencontrado = this.buscarPorNombre(po.getDescripcion());
			if (poencontrado.getDescripcion()==null){
			
				stmt = con.prepareStatement(query);
				stmt.setString(1, po.getCodcorto());
				stmt.setString(2, po.getDescripcion());
				stmt.setString(3, po.getTipoproducto());
				stmt.setString(4, po.getTiposervicio());
				
				int i = stmt.executeUpdate();
				if (i != 1) {
					throw new SQLException("No se pudo insertar");
				}
			}
			else
			{
				System.out.println("Poder ya existe con el codigo: " + poencontrado.getCodcorto());
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
	
	public Poder buscarPorNombre(String descripcion) throws DAOExcepcion {
		System.out.println("Poder : buscarPorNombre(String nombre)");
		String query = "SELECT codpoder, descripcion, tipoproducto, tiposervicio FROM Poder WHERE descripcion like ?";
		Poder po = new Poder();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, "%" + descripcion + "%");
			rs = stmt.executeQuery();
			while (rs.next()) {
				po.setCodcorto(rs.getString("codpoder"));
				po.setDescripcion(rs.getString("descripcion"));
				po.setTipoproducto(rs.getString("tipoproducto"));
				po.setTiposervicio(rs.getString("tiposervicio"));

			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return po;
	}
	
		

}
